/*
*
Q:Go语言中的并发编程是如何实现的？

A:Go语言通过goroutine和Channel实现并发，goroutine是一种轻量级的线程，可以同时执行多个goroutine，而不需要显式地管理线程地生命周期。
channel是用于goroutine之间通信地管道
*/
package main

import "fmt"

func main() {
	c := make(chan int)
	go fibonacci(10, c)
	for num := range c {
		fmt.Println(num)
	}
}

func fibonacci(n int, c chan int) {
	x, y := 0, 1
	for i := 0; i < n; i++ {
		c <- x
		x, y = y, x+y
	}

	close(c)
}

/**
在上述代码中，我们使用goroutine启动了一个计算斐波那契数列的函数，并通过channel进行通信。
主函数从channel中接收计算结果并打印。通过goroutine和channel的结合，我们实现了并发计算斐波那契数列的功能。
*/
